package FILE;

import java.io.File;
import java.io.IOException;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 石方旭
 * Date: 2022-09-29
 * Time: 19:15
 */
public class FileInformation {

    // TODO: 2022/9/29 演示文件常用特点

    public static void FileField() throws IOException {
        File file = new File("e://animal.txt");//文件可能不存在
        //得到文件对象的名字
        System.out.println("文件的名字" + file.getName());
        //得到文件对象父目录文件路径
        System.out.println("父目录文件路径" + file.getParent());
        //得到文件对象的文件路径
        System.out.println("文件路径" + file.getPath());
        //得到文件对象的绝对路径
        System.out.println("文件的绝对路径" + file.getAbsolutePath());
        //得到文件对象修饰过的绝对路径
        System.out.println("文件对象修饰过的绝对路径" + file.getCanonicalPath());
    }

    // TODO: 2022/9/29 演示文件的创建和删除

    public static void createOrDelete() throws IOException {
        File file = new File("helloWorld.txt");
        //判断该文件是否存在
        System.out.println("文件是否存在 : " + file.exists());
        //判断文件目录是否存在
        System.out.println("文件目录是否存在 : " + file.isDirectory());
        //判断文件是否是一个普通的文件
        System.out.println("文件是否是普通的文件 : " + file.isFile());
        //创建整个文件对象
        System.out.println("创建文件" + file.createNewFile());
        //判断文件是否存在
        System.out.println("文件是否存在" + file.exists());
        //判断文件目录是否存在
        System.out.println("文件目录是否存在" + file.isDirectory());
        //判断文件是否是普通的文件
        System.out.println("文件是否是普通的文件 : " + file.isFile());
        //创建整个文件对象
        System.out.println("创建文件" + file.createNewFile());
    }

    // TODO: 2022/9/29 演示文件的删除

    public static void deleteFile() throws IOException {
        File file = new File("somefile.txt");
        //判断文件是否存在
        System.out.println(file.exists());
        //创建文件
        System.out.println(file.createNewFile());
        //判断文件是否存在
        System.out.println(file.exists());
        //删除文件
        System.out.println(file.delete());
        //判断文件是否存在
        System.out.println(file.exists());
    }

    /**
     * 根据 File 对象，标注文件将被删除，删除动作会到JVM 运行结束时才会进行
     */
    public static void deleteExitFile() throws IOException {
        File file = new File("somefile1.txt");
        //判断文件是否存在
        System.out.println(file.exists());
        //创建文件
        System.out.println(file.createNewFile());
        //判断文件是否存在
        System.out.println(file.exists());
        //删除文件
        file.deleteOnExit();
        //判断文件是否存在
        System.out.println(file.exists());
    }


    // TODO: 2022/9/29 演示目录的创建

    public static void fileMkdir(){
        //创建File对象---目录
        File file = new File("some-ex");
        //判断目录是否存在
        System.out.println("目录是否存在" + file.isDirectory());
        //判断是否是普通的文件
        System.out.println("是否是普通的文件" + file.isFile());
        //创建单级目录
        System.out.println("创建单级目录" + file.mkdir());
        //判断目录是否存在
        System.out.println("目录是否存在" + file.isDirectory());
        //判断是否是普通的文件
        System.out.println("是否是普通的文件" + file.isFile());
    }

    // TODO: 2022/9/29 多级目录

    public static void fileMkdir1(){
        //创建File对象---目录
        File file = new File("some-ex2\\some-dir2");
        //判断目录是否存在
        System.out.println("目录是否存在" + file.isDirectory());
        //判断是否是普通的文件
        System.out.println("是否是普通的文件" + file.isFile());
        //创建多级目录
        System.out.println("创建单级目录" + file.mkdirs());
        //判断目录是否存在
        System.out.println("目录是否存在" + file.isDirectory());
        //判断是否是普通的文件
        System.out.println("是否是普通的文件" + file.isFile());
    }

    // TODO: 2022/9/29 文件的重命名

    public static void reNameToFileName(){
        File file = new File("e://test1.txt");//文件存在
        File dest = new File("e://dest.txt");//文件不存在
        System.out.println(file.exists());
        System.out.println(dest.exists());
        System.out.println(file.renameTo(dest));
        System.out.println(file.exists());
        System.out.println(dest.exists());
    }




    public static void main(String[] args) throws IOException {
        fileMkdir();
        fileMkdir1();
        deleteExitFile();
        deleteFile();
        FileField();
        createOrDelete();
        reNameToFileName();
    }

}
